wayland: implement text_property_to_utf8_list()
authorCarlos Garnacho <carlosg@gnome.org>
Thu, 21 Aug 2014 17:50:21 +0000 (19:50 +0200)
committerCarlos Garnacho <carlosg@gnome.org>
Mon, 1 Sep 2014 17:17:53 +0000 (19:17 +0200)
Of some sort, this is enough to get text transfers on wayland, anything but
utf8 as plain/text should be pretty rare.

https://bugzilla.gnome.org/show_bug.cgi?id=697855

gdk/wayland/gdkselection-wayland.c

index 39702750ac5d57a5c8f22b82dc79f79f17189208..44cbee6cdef1d8287ee04d771929d6031ca76094 100644 (file)
@@ -77,7 +77,37 @@ _gdk_wayland_display_text_property_to_utf8_list (GdkDisplay    *display,
                                                 gint           length,
                                                 gchar       ***list)
 {
-  return 0;
+  GPtrArray *array;
+  const gchar *ptr;
+  gsize chunk_len;
+  gchar *copy;
+  guint nitems;
+
+  ptr = (const gchar *) text;
+  array = g_ptr_array_new ();
+
+  while (ptr < (const gchar *) &text[length])
+    {
+      chunk_len = strlen (ptr);
+
+      if (g_utf8_validate (ptr, chunk_len, NULL))
+        {
+          copy = g_strndup (ptr, chunk_len);
+          g_ptr_array_add (array, copy);
+        }
+
+      ptr = &ptr[chunk_len + 1];
+    }
+
+  nitems = array->len;
+  g_ptr_array_add (array, NULL);
+
+  if (list)
+    *list = (gchar **) g_ptr_array_free (array, FALSE);
+  else
+    g_ptr_array_free (array, TRUE);
+
+  return nitems;
 }
 
 gchar *